﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using NIEN_LUAN.Db;
using System.Windows.Forms;

namespace NIEN_LUAN
{
    public partial class FormTimKiemPhieuNhap : Form
    {
        private DataContentDataContext db = new DataContentDataContext();

        public FormTimKiemPhieuNhap()
        {
            InitializeComponent();
        }

        private void btnTimPN_Click(object sender, EventArgs e)
        {
            if (!this.checkBoxTimkiemMCC.Checked && this.checkBoxTkiemMNV.Checked && !this.checkBoxTkiemNgaylap.Checked)
            {
                if (string.IsNullOrEmpty(this.comboBoxNV.Text))
                {
                    MessageBox.Show("Chưa nhập mã Nhân viên");
                    return;
                }               

                var phieunhap = (from m in db.PHIEUNHAPs
                                 where m.MaNhanVien == this.comboBoxNV.Text
                                 select m).ToList();
                this.pHIEUNHAPBindingSource.DataSource = phieunhap;
                this.pHIEUNHAPBindingSource.ResetBindings(true);
                return;
            }

            if (this.checkBoxTimkiemMCC.Checked && !this.checkBoxTkiemMNV.Checked && !this.checkBoxTkiemNgaylap.Checked)
            {                
                if (string.IsNullOrEmpty(this.comboBoxNCC.Text))
                {
                    MessageBox.Show("Chưa nhập mã nhà cung cấp", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                var phieunhap = (from m in db.PHIEUNHAPs
                                 where m.MaNhaCungCap == this.comboBoxNCC.Text
                                 select m).ToList();
                this.pHIEUNHAPBindingSource.DataSource = phieunhap;
                this.pHIEUNHAPBindingSource.ResetBindings(true);
                return;
            }

            if (!this.checkBoxTimkiemMCC.Checked && !this.checkBoxTkiemMNV.Checked && this.checkBoxTkiemNgaylap.Checked)
            {                
                var phieunhap = (from m in db.PHIEUNHAPs
                                 where ((m.NgayLap >= this.dateTimePickerNgay1.Value) && (m.NgayLap <= this.dateTimePickerNgay2.Value))
                                 select m).ToList();
                this.pHIEUNHAPBindingSource.DataSource = phieunhap;
                this.pHIEUNHAPBindingSource.ResetBindings(true);
                return;
            }

            if (!this.checkBoxTimkiemMCC.Checked && this.checkBoxTkiemMNV.Checked && this.checkBoxTkiemNgaylap.Checked)
            {
                if (string.IsNullOrEmpty(this.comboBoxNV.Text))
                {
                    MessageBox.Show("Chưa nhập mã Nhân viên");
                    return;
                }

                var phieunhap = (from m in db.PHIEUNHAPs
                                 where ((m.MaNhanVien == this.comboBoxNV.Text) && ((m.NgayLap >= this.dateTimePickerNgay1.Value) && (m.NgayLap <= this.dateTimePickerNgay2.Value)))
                                 select m).ToList();
                this.pHIEUNHAPBindingSource.DataSource = phieunhap;
                this.pHIEUNHAPBindingSource.ResetBindings(true);
                return;
            }

            if (this.checkBoxTimkiemMCC.Checked && !this.checkBoxTkiemMNV.Checked && this.checkBoxTkiemNgaylap.Checked)
            {                
                if (string.IsNullOrEmpty(this.comboBoxNCC.Text))
                {
                    MessageBox.Show("Chưa nhập mã nhà cung cấp", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                var phieunhap = (from m in db.PHIEUNHAPs
                                 where ((m.MaNhaCungCap == this.comboBoxNCC.Text) && ((m.NgayLap >= this.dateTimePickerNgay1.Value) && (m.NgayLap <= this.dateTimePickerNgay2.Value)))
                                 select m).ToList();
                this.pHIEUNHAPBindingSource.DataSource = phieunhap;
                this.pHIEUNHAPBindingSource.ResetBindings(true);
                return;
            }

            if (this.checkBoxTimkiemMCC.Checked && this.checkBoxTkiemMNV.Checked && !this.checkBoxTkiemNgaylap.Checked)
            {
                if (string.IsNullOrEmpty(this.comboBoxNV.Text))
                {
                    MessageBox.Show("Chưa nhập mã Nhân viên");
                    return;
                }

                if (string.IsNullOrEmpty(this.comboBoxNCC.Text))
                {
                    MessageBox.Show("Chưa nhập mã nhà cung cấp", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                var phieunhap = (from m in db.PHIEUNHAPs
                                 where ((m.MaNhaCungCap == this.comboBoxNCC.Text) && (m.MaNhanVien == this.comboBoxNV.Text))
                                 select m).ToList();
                this.pHIEUNHAPBindingSource.DataSource = phieunhap;
                this.pHIEUNHAPBindingSource.ResetBindings(true);
                return;
            }        

            if (this.checkBoxTimkiemMCC.Checked && this.checkBoxTkiemMNV.Checked && this.checkBoxTkiemNgaylap.Checked)
            {
                if (string.IsNullOrEmpty(this.comboBoxNV.Text))
                {
                    MessageBox.Show("Chưa nhập mã Nhân viên");
                    return;
                }

                if (string.IsNullOrEmpty(this.comboBoxNCC.Text))
                {
                    MessageBox.Show("Chưa nhập mã nhà cung cấp", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                var phieunhap = (from m in db.PHIEUNHAPs
                               where ((m.MaNhaCungCap == this.comboBoxNCC.Text) && (m.MaNhanVien == this.comboBoxNV.Text) && ((m.NgayLap >= this.dateTimePickerNgay1.Value) && (m.NgayLap <= this.dateTimePickerNgay2.Value)))
                               select m).ToList();
                this.pHIEUNHAPBindingSource.DataSource = phieunhap;
                this.pHIEUNHAPBindingSource.ResetBindings(true);
                return;
            }

            if (!this.checkBoxTimkiemMCC.Checked && !this.checkBoxTkiemMNV.Checked && !this.checkBoxTkiemNgaylap.Checked)
            {
                var chungtu = (from m in db.PHIEUNHAPs
                               select m).ToList();
                this.pHIEUNHAPBindingSource.DataSource = chungtu;
                this.pHIEUNHAPBindingSource.ResetBindings(true);
            }
        }

        private void btnThoatPN_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnChonNV_Click(object sender, EventArgs e)
        {
            Form frmChonNV = new FormTimKiemNhanVien(this);
            frmChonNV.ShowDialog();
        }

        private void btnChonNCC_Click(object sender, EventArgs e)
        {           
            Form frmChonNCC = new FormTimKiemNhaCungCap(this );
            frmChonNCC.ShowDialog();
        }

        private void FormTimKiemPhieuNhap_Load(object sender, EventArgs e)
        {
            this.dataGridViewPN.AutoGenerateColumns = false;
            var phieunhap = (from pn in db.PHIEUNHAPs
                             orderby pn.SoPhieuNhap ascending
                             select pn
                                 ).ToList();
            this.pHIEUNHAPBindingSource.DataSource = phieunhap;

            var nhacungcap = (from m in db.NHACUNGCAPs
                              select m).ToList();
            this.bsnhacungcap.DataSource = nhacungcap;
            this.comboBoxNCC.DataSource = bsnhacungcap;
            this.comboBoxNCC.DisplayMember = "MaNhaCungCap";

            var nhanvien = (from m in db.NHANVIENs
                              select m).ToList();
            this.bsnhanvien.DataSource = nhanvien;
            this.comboBoxNV.DataSource = bsnhanvien;
            this.comboBoxNV.DisplayMember = "MaNhanVien";
        }
   
        private void btnXoaCT_Click(object sender, EventArgs e)
        {
            PHIEUNHAP pn = pHIEUNHAPBindingSource.Current as PHIEUNHAP;
            if (pn != null)
            {
                var tl = MessageBox.Show("Bạn có chắc chắn xóa","Thông báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
                if (tl == DialogResult.Yes)
                {
                    var chitietpn = (from m in db.CHITIETPHIEUNHAPs
                                     where m.SoPhieuNhap == pn.SoPhieuNhap
                                     select m).ToList();

                    try
                    {
                        db.CHITIETPHIEUNHAPs.DeleteAllOnSubmit(chitietpn);
                        db.PHIEUNHAPs.DeleteOnSubmit(pn);
                        db.SubmitChanges();
                        foreach (var item in chitietpn)
                        {
                            var hangs = db.MATHANGs.Single(m => m.MaHang == item.MaHang);
                            hangs.SoLuongHienCo = hangs.SoLuongHienCo - item.SoLuongNhap;
                        }
                        this.pHIEUNHAPBindingSource.RemoveCurrent();
                        MessageBox.Show("Đã xóa ");

                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Đã có lỗi khi thực hiện điều này :)) LỖi chi tiết : "+ex.Message);
                        return;
                        //throw;
                    }
                }
            }
            else
            {
                MessageBox.Show("Chọn phiếu nhập ");
            }
        }

        private void btnXemPN_Click(object sender, EventArgs e)
        {
            var phieunhap = this.pHIEUNHAPBindingSource.Current as PHIEUNHAP;
            if (phieunhap != null)
            {
                Form frmXemPN = new FormLapPhieuNhap(this, phieunhap);
                frmXemPN.ShowDialog();
            }
            else
            {
                MessageBox.Show("Chọn chứng từ");
            }
        }
    }
}
